local getZone = reload("time.getZone")

local upZone = {
    UTC = 3600 * 0,    -- 协调世界时
    ECT = 3600 * 1,    -- 欧洲中部时间
    EET = 3600 * 2,    -- 欧洲东部时间
    ART = 3600 * 2,    -- 阿根廷时间
    EAT = 3600 * 3,    -- 东非时间
    MET = 3600 * 3.5,  -- 中东时间（通常为 UTC+3:30）
    NET = 3600 * 4,    -- 叙利亚时间（通常为 UTC+4）
    PLT = 3600 * 5,    -- 巴基斯坦地方时间
    IST = 3600 * 5.5,  -- 印度标准时间
    BST = 3600 * 6,    -- 孟加拉国标准时间
    VST = 3600 * 7,    -- 越南标准时间（通常为 UTC+7）
    CTT = 3600 * 8,    -- 中国标准时间
    JST = 3600 * 9,    -- 日本标准时间
    ACT = 3600 * 9.5,  -- 澳大利亚中部时间（UTC+9:30）
    AET = 3600 * 10,   -- 澳大利亚东部时间
    SST = 3600 * 11,   -- 斯图尔特岛时间（UTC+11）
    NST = 3600 * 12,   -- 新西兰标准时间
    MIT = 3600 * -11,  -- 中途岛时间
    HST = 3600 * -10,  -- 夏威夷标准时间
    AST = 3600 * -9,   -- 阿拉斯加标准时间
    PST = 3600 * -8,   -- 太平洋标准时间
    PNT = 3600 * -7,   -- 山地标准时间（通常为 UTC-7）
    MST = 3600 * -7,   -- 山地标准时间（通常为 UTC-7）
    CST = 3600 * 8,    -- 中部标准时间
    EST = 3600 * -5,   -- 东部标准时间
    IET = 3600 * -5,   -- 印度东部时间（通常为 UTC-5）
    PRT = 3600 * -4,   -- 葡萄牙时间
    CNT = 3600 * -3.5, -- 加拿大纽芬兰时间
    AGT = 3600 * -3,   -- 阿根廷时间
    BET = 3600 * -3,   -- 巴西东部时间
    CAT = 3600 * -1,   -- 中部非洲时间
}


local zoneDiffSec = upZone[getZone()]

---0点时间搓
---@param sec integer|nil @时间
---@return number
return function (sec)
    return sec - ((sec + zoneDiffSec) % 86400)
end
